#pragma once

#include <vector>

using std::vector;

class Figure
{
public:
    Figure(CRect rect);
    virtual ~Figure(void);

	virtual void Draw(CDC* pDC) = 0;

	virtual bool HasPoint(const CPoint& point) = 0;

    virtual bool IntersectWith(const CRect& rect)  = 0;
    
	virtual bool HasPointOnBorder(const CPoint& point) = 0;

	virtual void UpdateSize(const CPoint& point, const CRect& rect) = 0;

    virtual CRect GetBoundRect();

    virtual void Move(const CPoint& point, CPoint& previousPoint, const CRect& drawArea );

    virtual CRect GetMoveRect(const CPoint& point, CPoint& previousPoint);
    
    protected:
    CRect    enclosingRect;
    int      penWidth;
};

